﻿/*
'***************************************************************************************************************************
'Generator 版本：1.1.1000
'<<請依個別狀況自行輸入以下各欄位資料>>
'*程式代號：SCPK_Common
'*程式名稱：
'*目    的：ProcessKit 組件所需的共用的Client端Script Code
'*
'*備   註 ：
'*版本變更：
'* xx. YYYY/MM/DD	VER		AUTHOR			COMMENTS
'* === ==========	===		=======			==========
''   1. 2004/01/30	1.0		cindy_wu		New Create
'*
'***************************************************************************************************************************

*/
/***************************************************************************************************************************
''* Common Functions - 開始 -
***************************************************************************************************************************/
function SCChgDocLocation(vstrUrl) {
	// 設定 objWin 與 objDoc 的初始值 為 window / document
	// 宣告暫存的 window object；objCloseWin為欲關閉的視窗；objDocWin為objDoc的parentWindow
	// 註：For a document, the parent is the containing window. For a window defined using frame, the parent is the window that contains the corresponding frameSet definition.
	var objWin = window;
	var objDoc = document;
	var objCloseWin, objDocWin;

	// 以下Script有兩個while迴圈，外層迴圈處理視窗關閉；內層迴圈處理frame
	// 註：objWin - Retrieves the topmost ancestor window.
	while (typeof(objWin) == 'object') {
		if (typeof(objCloseWin) == 'object') objCloseWin.close();
		objWin = objWin.top;

		objDocWin = objDoc.parentWindow;
		while (typeof(objDocWin) == 'object') {
			objDoc = objDocWin.parent;
			objDocWin = objDoc.parentWindow;
		}

		objCloseWin = objWin;
		objDoc = objWin.parent;
		objWin = objWin.opener;
	}
	objDoc.location.href = vstrUrl;
}
/***************************************************************************************************************************
''* Common Functions - 結束 -
***************************************************************************************************************************/
/***************************************************************************************************************************
''* 處理 Session Timeout 及 URL 重新導向 - 開始 -
'***************************************************************************************************************************
''* Important: FrameSet 所在的 page 不要做 Timeout 檢查，如 AP_TOP40.ASPX
''*            請將不要做 Timeout 檢查的程式以 , 區隔，設定在組態檔的 SCstrTimeoutExclusion 裡
***************************************************************************************************************************/
var SCCurrentPath = '';								// 由 Client 端 Script 處理
var SCCurrentAP = '';								// 由 Server 端程式指定
var SCExclusion = 'AP_TOP40.aspx,aFUNLIST40.aspx';

function SCSetTimeout(vintMin, vstrTopUrl) {
	_SCsetCurrentPath();
	var strFileName = SCCurrentPath.substr(SCCurrentPath.lastIndexOf('/')+1, SCCurrentPath.length-SCCurrentPath.lastIndexOf('/')-1);
	var strExclusion = ',' + SCExclusion + ',';

	strFileName = strFileName.toUpperCase();
	strExclusion = strExclusion.toUpperCase();
	SCCurrentPath = SCCurrentPath.toUpperCase();
	vstrTopUrl = vstrTopUrl.toUpperCase();

	var strCurrentPathFile = SCCurrentPath;		//為 SCCurrentPath 去掉 ? 後的字串
	if (strCurrentPathFile.indexOf('?') > 0) {
		strCurrentPathFile = strCurrentPathFile.substr(0, strCurrentPathFile.indexOf('?'));}

	if (vstrTopUrl.indexOf(strCurrentPathFile) < 0 && strExclusion.indexOf(',' + strFileName + ',') < 0) {
		// 目前不在 TopUrl 也不包含在 SCExclusion 的 aspx 才執行以下程式
		// vintMin - Session.Timeout，需換成 milliseconds
		window.setTimeout('SCTimeoutMsg();SCUrlRedirectToLoginPage(\'' + vstrTopUrl + '\',false);', vintMin*60*1000+5*1000);
	}
}
function SCTimeoutMsg() {
	var strExpression = 'blnMsgBox = MsgBox(\"超過時間未使用，請重新登入\",48,\"警告訊息\")';
	window.execScript(strExpression,'VBScript');
}
function SCUrlRedirectToLoginPage(vstrTopUrl, vblnSetCurrentPath) {
	var strUrl = '?SCDrct=' + escape(SCCurrentAP + '\\|');
	if (vblnSetCurrentPath != false) {
		_SCsetCurrentPath();
		strUrl = strUrl + escape(SCCurrentPath);
	}
	strUrl = vstrTopUrl + strUrl;
	SCChgDocLocation(strUrl);
}
function _SCsetCurrentPath() {
	var strLocation = document.location.href;
	strLocation = strLocation.substr(strLocation.indexOf('://')+3);		// 去掉 http://
	SCCurrentPath = strLocation.substr(strLocation.indexOf('/'));		// 去掉 server name，ex:/SC3
}
/***************************************************************************************************************************
''* 處理 Session Timeout 及 URL 重新導向 - 結束 -
***************************************************************************************************************************/